ヘッダーをスキップ
Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド
リリース6.0
B25770-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

CURDATEのエミュレート

ODBC関数のCURDATEはサポートされていません。

例9.5

システム・コールを使用して、この関数と同様の機能をアプリケーションで実現できます。次に例を示します。

#include <time.h> 
#include <stdio.h> 
/* Function curdate returns current date in YYYY-MM-DD string
  format */ 
/* datebuf is assumed to point to a buffer of at least 11 bytes*/ 
 char * curdate(char *datebuf) 
 { 
   struct tm *timestamp; 
   time_t curtimestamp = time((time_t*)0); 
   timestamp = localtime_r(&curtimestamp); 
   sprintf(datebuf, "%04d-%02d-%02d", 
	  timestamp->tm_year+1900, timestamp->tm_mon+1,
 timestamp->tm_mday); 
   return datebuf; 
} 
 

CURDATEはサポートされていませんが、ODBCの現在の日時のスカラー関数であるNOWはサポートされています。NOWから戻されるTIMESTAMP値を変換してTO_DATEに渡すことによってCURDATEと同様の処理を実現するだけでなく、ODBCプログラム内でNOW関数をコールできます。

TimesTenのTO_DATEでは、DATE型ではなくTIMESTAMP型を戻します。

NOW関数をコールするには、次のような構文を使用します。

--(*vendor(Microsoft),product(ODBC) FN NOW() *)--

または、次の構文を使用することもできます。

{FN NOW()}

ODBC SQLGetInfo関数をコールすることによって、NOWがサポートされていることをアプリケーションで確認できます。次に例を示します。

rc =  SQLGetInfo(hdbc, SQL_TIMEDATE_FUNCTIONS, (PTR)&fFuncs, sizeof(fFuncs), NULL); if (fFuncs & SQL_FN_TD_NOW) printf("NOW function is supported.\n");   else printf("NOW function is not supported.\n");